package cn.bearspark.api.vo.main.article;

import cn.bearspark.api.validation.Enumeration;
import cn.bearspark.common.enumeration.CommentAbleEnum;
import cn.bearspark.common.enumeration.DeclarationEnum;
import cn.bearspark.common.enumeration.VisibilityEnum;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.util.List;

/**
 * 修改专栏的请求的视图对象
 *
 * @author f
 */
@Data
public class ModifyArticleVO {

    /**
     * 专栏的 id
     */
    @NotNull
    private Long articleId;

    /**
     * 专栏的标题，最多 100 个字
     */
    @NotBlank
    @Size(min = 1, max = 100)
    private String title;

    /**
     * 专栏的摘要，最多 256 个字
     */
    @NotBlank
    @Size(min = 1, max = 256)
    private String summary;

    /**
     * 专栏的内容
     */
    @NotBlank
    private String content;

    /**
     * 封面图片的路径，可以为 null，如果为 null，则后端设置默认的封面
     */
    private String coverUrl;

    /**
     * 专栏的标签 id
     */
    @NotNull
    private Long tagId;

    /**
     * 专栏的分类 id 集合，最多 3 个，可以为空集合
     */
    @NotNull
    private List<Long> categoryIdList;

    /**
     * 图片的 url 的路径的集合，可以为空集合
     */
    @NotNull
    private List<String> imgUrlList;

    /**
     * 专栏的可见性
     *
     * @see VisibilityEnum
     */
    @Enumeration(VisibilityEnum.class)
    private Integer visibility;

    /**
     * 专栏的可评论性
     *
     * @see CommentAbleEnum
     */
    @Enumeration(CommentAbleEnum.class)
    private Integer commentAble;

    /**
     * 专栏的创作声明
     *
     * @see DeclarationEnum
     */
    @Enumeration(DeclarationEnum.class)
    private Integer declaration;

    /**
     * 转载专栏的路径，如果没有转载，则可以为 null
     */
    private String reprintArticleUrl;

}
